#include <stdio.h>
#include <stdlib.h>

#define SIZE 10

struct Student_type
{ char name[10];
   int num;
   int age;
   char addr[15];
};

struct Student_type stud[SIZE];

int main(int argc, char *argv[])
{
    // 编程要点1：使用rb模式打开二进制文件
    FILE *fp = fopen("stu.dat", "rb");
    if (fp == NULL)
    {
        printf("cannot open file\n");
        return 1;
    }
    /* 方式1：使用循环读入 */
    int i = 0;
    for(i = 0; i < SIZE;  i++)
    {
        int ret = fread(&stud[i], sizeof(stud[i]), 1, fp);
        if (ret != 1)
        {
            printf("read file error\n");
            return 2;
        }
    }
    /* 方式2：使用fread读入整个数组 */
    /*
    int ret = fread(stud, sizeof(struct Student_type), SIZE, fp);
    if (ret != SIZE)
    {
        printf("read file error\n");
        return 2;
    }
    */
    // 打印读入的记录数组
    for(i = 0; i < SIZE; i++)
    {
        printf("%-10s %4d %4d %-15s\n", stud[i].name, stud[i].num ,stud[i].age, stud[i].addr);
    }
    // 编程要点2：及时关闭文件
    fclose(fp);
    return 0;
}